package org.xdq.demo.util;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.xdq.demo.page.PageParam;
import org.xdq.demo.page.QueryAction;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MyUtils {



    public static <T> Map<String,Object> getPage(PageParam pageParam, QueryAction<T> queryAction) throws Exception {
        //通过PageHelper设置分页参数，必须紧挨在需要分页的映射器查询之前调用
        //PageHelper.startPage(pageParam.getPageNum(),pageParam.getPageSize());//该方法的两个参数pageNum和pageSize不允许为null
        PageHelper.startPage(pageParam);//该方法接收对象参数中要求有pageNum和pageSize属性，而且这两个属性不能为null
        List<T> list = queryAction.executeQuery();//通过查询对象执行查询，该逻辑由参数传入
        //创建分页信息封装对象，必须紧挨在需要分页的映射器查询之后调用
        PageInfo<T> pageInfo = new PageInfo<>(list);

        //以下是对分页结果的自定义封装
        Map<String,Object> page = new HashMap<>();
        //1. 当前页码
        page.put("current",pageInfo.getPageNum());
        //2. 第一页码
        page.put("first",1);
        //3. 上一页码
        page.put("prev",pageInfo.getPrePage());
        //4. 下一页码
        page.put("next",pageInfo.getNextPage());
        //5. 最后一页码
        page.put("last",pageInfo.getPages());
        //6. 每页最大记录数
        page.put("pageSize",pageInfo.getPageSize());
        //7. 总记录数
        page.put("total",pageInfo.getTotal());
        //8. 总页数
        page.put("pages",pageInfo.getPages());
        //9. 当前页记录数
        page.put("currSize",pageInfo.getSize());
        //10. 当前页数据记录
        page.put("list",pageInfo.getList());

        return page;

    }



}
